//package com.aabbc.aaaaa.utils;
//
//import org.apache.commons.io.FileUtils;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//
//import java.io.*;
//import java.nio.ByteBuffer;
//import java.nio.MappedByteBuffer;
//import java.nio.channels.FileChannel;
//import java.nio.channels.FileChannel.MapMode;
//import java.util.List;
//
///**
// * 功能描述:操作文件的工具类
// * <p>
// * 版权所有：中企动力
// * <p>
// * 未经本公司许可，不得以任何方式复制或使用本程序任何部分
// *
// * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Feb 20, 2008
// * @author 你的姓名 修改日期：Feb 20, 2008
// * @since 运营运维管理系统 version(1.1)
// */
//public class FileUtil {
//
//    private static Log log = LogFactory.getLog(FileUtil.class);
//
//    /**
//     * 方法用途和描述: 重命名文件
//     *
//     * @param file 要被命名的文件对象
//     * @param newName 新文件名
//     * @param isReplace 如果文件存在，是否复盖
//     * @return 重命名成功与否[true|false]
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：2007-12-28
//     */
//    public final static boolean reNameFile(File file, String newName,
//                                           boolean isReplace) {
//        if (file == null) {
//            log.error("------reNameFile(File,String,boolean)--------参数为空！------");
//            return false;
//        }
//        String fileName = BlankUtil.isBlank(newName) ? file.getName() : newName;
//
//        int index = fileName.lastIndexOf(".");
//        String prefixName = "";
//        String postfixName = "";
//
//        if (index != -1) {
//            prefixName = fileName.substring(0, index);
//            postfixName = fileName.substring(index + 1, fileName.length());
//        } else {
//            prefixName = fileName;
//        }
//
//        File _file = new File(fileName);
//
//        if (isReplace && _file.exists()) {
//            _file.delete();
//        } else {
//            int i = 0;
//            while (_file.exists()) {
//                _file = null;
//                fileName = new StringBuilder(prefixName).append("(")
//                        .append(i++).append(").").append(postfixName)
//                        .toString();
//                _file = new File(fileName);
//            }
//        }
//        boolean result = file.renameTo(_file);
//        _file = null;
//        return result;
//    }
//
//    /**
//     * 方法用途和描述: 获取文件名
//     *
//     * @param filePath 文件路径
//     * @param isCheckExists 是否需要检测文件是否存在
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Feb 20, 2008
//     * @author 你的姓名 修改日期：Feb 20, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static String getFileName(String filePath,
//                                           boolean isCheckExists) {
//        if (BlankUtil.isBlank(filePath)) {
//            log.error("-------getFileName(String,boolean)--------接口参数为空！------");
//            return null;
//        }
//        File file = new File(formatFilePath(filePath));
//        if (isCheckExists) {
//            if (!file.exists()) {
//                log.warn(filePath + " 文件不存在！");
//                return null;
//            }
//            if (file.isDirectory()) {
//                log.warn(filePath + " 是目录而不是文件！");
//                return null;
//            }
//        }
//        String fileName = file.getName();
//        log.debug("----getFileName(String,boolean)-----fileName = " + fileName);
//        return fileName;
//    }
//
//    /**
//     * 方法用途和描述: 将文件路径中的\转换成/
//     *
//     * @param filePath 文件路径
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 24, 2008
//     * @author 你的姓名 修改日期：Mar 24, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static String formatFilePath(String filePath) {
//        filePath = replace(filePath, "\\\\", "/");
//        filePath = replace(filePath, "\\", "/");
//        return filePath;
//    }
//
//    /**
//     * 方法用途和描述: 判断是字符串是否不为null或empty，不包括空字符在内
//     *
//     * @param str
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 27,
//     *         2008
//     * @author 你的姓名 修改日期：Mar 27, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    private static boolean isEmpty(String str) {
//        return str == null || str.length() == 0;
//    }
//
//    /**
//     * 方法用途和描述: 替换字符串
//     *
//     * @param text
//     *            :原字符串
//     * @param repl
//     *            :要替换的字符串
//     * @param with
//     *            :用来替换的字符串
//     * @return 返回替换后的字符串
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 27,
//     *         2008
//     * @author 你的姓名 修改日期：Mar 27, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    private static String replace(String text, String repl, String with) {
//        return replace(text, repl, with, -1);
//    }
//
//    /**
//     * 方法用途和描述: 替换字符串
//     *
//     * @param text :原字符串
//     * @param repl :要替换的字符串
//     * @param with :用来替换的字符串
//     * @param max :替换的次数-1表示不指定替换次数
//     * @return 返回替换后的字符串
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 27, 2008
//     * @author 你的姓名 修改日期：Mar 27, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    private static String replace(String text, String repl, String with, int max) {
//        if (text == null || isEmpty(repl) || with == null || max == 0)
//            return text;
//        StringBuffer buf = new StringBuffer(text.length());
//        int start = 0;
//        for (int end = 0; (end = text.indexOf(repl, start)) != -1;) {
//            buf.append(text.substring(start, end)).append(with);
//            start = end + repl.length();
//            if (--max == 0)
//                break;
//        }
//
//        buf.append(text.substring(start));
//        return buf.toString();
//    }
//
//    /**
//     * 方法用途和描述: 获得文件的后缀名
//     *
//     * @param fileName
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 4, 2008
//     * @author 你的姓名 修改日期：Mar 4, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static String getFilePostfixName(String filePath) {
//        String fileName = getFileName(filePath, false);
//        if (BlankUtil.isBlank(fileName)) {
//            return null;
//        }
//        int index = fileName.lastIndexOf(".");
//        if (index != -1) {
//            return fileName.substring(index + 1, fileName.length());
//        }
//        return null;
//    }
//
//    /**
//     * 方法用途和描述: 获得文件名的前缀名，即不带后缀名的名称
//     *
//     * @param filePath
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 4, 2008
//     * @author 你的姓名 修改日期：Mar 4, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static String getFilePrefixName(String filePath) {
//        String fileName = getFileName(filePath, false);
//        if (BlankUtil.isBlank(fileName)) {
//            return null;
//        }
//        int index = fileName.lastIndexOf(".");
//        if (index != -1) {
//            return fileName.substring(0, index);
//        } else {
//            return fileName;
//        }
//    }
//
//    /**
//     * 方法用途和描述: 将指定的文件追加到另一个文件未尾
//     *
//     * @param targetFilePath 要追加到的目标文件路径
//     * @param appendFilePath 要追加的文件路径
//     * @param isNewline 追加时是否需要换行
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Feb 25, 2008
//     * @author 你的姓名 修改日期：Feb 25, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static boolean appendFile(String targetFilePath,
//                                           String appendFilePath, boolean isNewline) {
//        if (BlankUtil.isBlank(targetFilePath)
//                || BlankUtil.isBlank(appendFilePath)) {
//            log
//                    .error("appendFile(String,String,boolean)-------targetFilePath or appendFilePath is null!");
//            return false;
//        }
//        File appendFile = new File(appendFilePath);
//        if (!appendFile.exists()) {
//            log.error(appendFilePath + ".exists() = false");
//            return false;
//        }
//        MappedByteBuffer mbb = null;
//        try {
//            mbb = new RandomAccessFile(appendFile, "r").getChannel().map(
//                    MapMode.READ_ONLY, 0, appendFile.length());
//        } catch (FileNotFoundException e1) {
//            e1.printStackTrace();
//            return false;
//        } catch (IOException e1) {
//            e1.printStackTrace();
//            return false;
//        }
//        if (BlankUtil.isBlank(mbb)) {
//            log.error(appendFile + " MappedByteBuffer is null!");
//            return false;
//        }
//
//        File targetFile = new File(targetFilePath);
//        if (!targetFile.exists()) {
//            try {
//                if (!targetFile.getParentFile().exists()) {
//                    boolean createResult = targetFile.getParentFile().mkdirs();
//                    log.debug("创建文件夹" + targetFile.getParent() + "结果："
//                            + createResult);
//                }
//                targetFile.createNewFile();
//            } catch (IOException e) {
//                e.printStackTrace();
//                return false;
//            }
//        }
//
//        try {
//            FileChannel fc = new RandomAccessFile(targetFile, "rwd")
//                    .getChannel();
//            if (isNewline && fc.size() > 0) {
//                ByteBuffer bb = ByteBuffer.wrap("\n".getBytes());
//                fc.write(bb, fc.size());
//            }
//            fc.write(mbb, fc.size());
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//            return false;
//        } catch (IOException e) {
//            e.printStackTrace();
//            return false;
//        }
//
//        return true;
//    }
//
//    /**
//     * 方法用途和描述: 删除文件
//     * @param filePath
//     * @author <a href="mailto:zhangxianxin331@hotmail.com">张宪新</a> 新增日期：2010-07-01
//     */
//    public final static void deleteFile(String filePath) {
//        if (BlankUtil.isBlank(filePath)) {
//            //要删除的文件路径为空！
//            log.error("\u8981\u5220\u9664\u7684\u6587\u4ef6\u8def\u5f84\u4e3a\u7a7a\uff01");
//            return;
//        }
//        File file = new File(filePath);
//        if (file.exists()) {
//            boolean bln = file.delete();
//            if(log.isDebugEnabled())
//                log.debug("---deleteFile---" + bln);
//        }
//        file = null;
//    }
//
//    /**
//     * 方法用途和描述: 删除文件
//     *
//     * @param filePathList
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Feb 25, 2008
//     * @author 你的姓名 修改日期：Feb 25, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static void deleteFile(List<String> filePathList) {
//        if (filePathList == null) {
//            log.error("deleteFile(List<String>)----------参数为空！");
//            return;
//        }
//        for (String filePath : filePathList)
//            deleteFile(filePath);
//    }
//
//    /**
//     * 方法用途和描述: 清空指定的目录（删除指定目录下的所有文件包括子文件夹及子文件夹下的文件）
//     *
//     * @param dirPath
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 20, 2008
//     * @author 你的姓名 修改日期：Mar 20, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static void clearDir(String dirPath) {
//        if (!FileUtil.checkDirectoryExists(dirPath)) {
//            log.error("checkDirectoryExists(\"" + dirPath + "\") = false");
//            return;
//        }
//        if(log.isDebugEnabled())
//            log.debug("清空\"" + dirPath + "\"目录！");
//        File file = new File(dirPath);
//        boolean bln = false;
//        for (File f : file.listFiles()) {
//            if (f.isDirectory())
//                FileUtil.clearDir(f.getAbsolutePath());
//            bln = f.delete();
//            if(log.isDebugEnabled())
//                log.debug("deleteFile \"" + f.getName() + "\" result: " + bln);
//            f=null;
//        }
//        file = null;
//    }
//
//    /**
//     * 方法用途和描述: 查检文件夹的路径是否存在
//     *
//     * @param dirPath
//     *            文件夹路径
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 6, 2008
//     * @author 你的姓名 修改日期：Mar 6, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static boolean checkDirectoryExists(String dirPath) {
//        if (BlankUtil.isBlank(dirPath)) {
//            log.error("checkDirectoryExists(String )---------dirPath is null !");
//            return false;
//        }
//
//        File dir = new File(dirPath);
//
//        if (dir.exists()) {
//            dir = null;
//            return true;
//        }
//
//        int index = dirPath.indexOf("/");
//        int index1 = dirPath.indexOf("\\");
//        if (index == -1 && index1 == -1) {
//            log.error(dirPath + " isn't dir path !");
//            return false;
//        }
//
//        return true;
//    }
//
//    /**
//     * 方法用途和描述: 查检文件的路径是否存在，如果不存在则创建此文件所在的路径，不包括创建文件。
//     *
//     * @param filePath 文件路径，可以是带文件名的
//     * @return
//     * @author <a href="mailto:zhangxianxin@myce.net.cn">张宪新</a> 新增日期：Mar 6, 2008
//     * @author 你的姓名 修改日期：Mar 6, 2008
//     * @since 运营运维管理系统 version(1.1)
//     */
//    public final static boolean checkFileDirectoryExists(String filePath) {
//        if (BlankUtil.isBlank(filePath)) {
//            log.error("checkFileDirectoryExists(String )---------filePath is null !");
//            return false;
//        }
//
//        File outputFile = new File(filePath);
//
//        if (outputFile.exists()) {
//            outputFile = null;
//            return true;
//        }
//
//        int index = filePath.indexOf("/");
//        int index1 = filePath.indexOf("\\");
//        if (index == -1 && index1 == -1) {
//            log.error(filePath + " isn't file path !");
//            return false;
//        }
//
//        File parentFile = outputFile.getParentFile();
//        if (BlankUtil.isBlank(parentFile)) {
//            log.error("parentFile is null!");
//            return false;
//        }
//        if (parentFile.exists()) {
//            parentFile = null;
//            outputFile = null;
//            return true;
//        }
//
//        boolean createResult = parentFile.mkdirs();
//        log.debug("创建文件夹\"" + outputFile.getParent() + "\"结果：" + createResult);
//        if (!createResult) {
//            log.error("创建父文件夹失败！");
//            return false;
//        }
//
//        parentFile = null;
//        outputFile = null;
//        return true;
//    }
//
//    /**
//     *
//     * 方法用途和描述: 判断文件是否为不为空
//     *
//     * @param obj
//     * @return 文件为空 返回false 文件为空返回true
//     * @author 马达 新增日期：2007-9-17
//     */
//    public final static boolean isNotEmptyFile(Object obj) {
//        if (obj == null) {
//            log.error("isNotEmptyFile(Object)----参数为空！");
//            return false;
//        }
//        InputStream is = null;
//        int read = 0;
//        try {
//            if (obj instanceof File) {
//                is = new FileInputStream((File) obj);
//                read = is.read();
//            } else if (obj instanceof FileInputStream) {
//                is = ((FileInputStream) obj);
//                read = is.read();
//            }
//            if (read == -1) {
//                return false;
//            }
//            return true;
//        } catch (FileNotFoundException e) {
//            return false;
//        } catch (IOException e) {
//            return false;
//        } finally {
//            if (is != null) {
//                try {
//                    is.close();
//                } catch (IOException e) {
//                    return false;
//                }
//            }
//        }
//    }
//
//    /**
//     * 方法用途和描述: 文件拷贝
//     * @param source 源文件
//     * @param target 目标文件
//     * @return
//     * @author 张宪新 新增日期：2010-7-2
//     * @author 你的姓名 修改日期：2010-7-2
//     */
//    public static final boolean copyFile(String source, String target){
//        try {
//            FileUtils.copyFile(new File(source), new File(target));
//        } catch (IOException e) {
//            e.printStackTrace();
//            return false;
//        }
//        return true;
//    }
//
//    /**
//     * 临时目录
//     */
//    private static String TEMP_DIR = null;
//
//    /**
//     * 方法用途和描述: 获取系统临时目录
//     * @return
//     * @author 张宪新 新增日期：2010-6-2
//     * @author 你的姓名 修改日期：2010-6-2
//     */
//    public static String getTempDir(){
//        if(TEMP_DIR != null)
//            return TEMP_DIR;
//
//        try {
//            File file = File.createTempFile(".commonBund_", "tmp");
//            TEMP_DIR = file.getParent();
//            boolean flag =file.delete();
//            if(log.isDebugEnabled())
//                log.debug("Delete temp file result is "+ flag);
//            file = null;
//        } catch (IOException e) {
//            log.error("create temp file failure!");
//            e.printStackTrace();
//        }
//
//        log.info("TempDir = "+TEMP_DIR);
//        return TEMP_DIR;
//    }
//
//    /**
//     * 方法用途和描述: 获取当前线程所在的类路径的根目录
//     * @return
//     * @author 张宪新 新增日期：2010-7-2
//     * @author 你的姓名 修改日期：2010-7-2
//     */
//    public static String getCurrentThreadClassPathRootDir(){
//        String ctcpRoot = Thread.currentThread().getClass().getResource("/").getPath().substring(1);
//        if(log.isDebugEnabled()){
//            log.debug("Thread.currentThread().getClass() = " + Thread.currentThread().getClass());
//            log.debug("classPathRootDir = "+ctcpRoot);
//        }
//        return ctcpRoot;
//    }
//
//}
